home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / ums116bt.lha / UMS / Developer / C / examples / PrintGroups.c < prev    next >
C/C++ Source or Header  |  1994-01-23  |  2KB  |  95 lines

  1. /*
  2.  * PrintGroups.c - Print all groups in a message base
  3.  *
  4.  * (c) 1992 Klaus Melchior, Stefan Becker
  5.  *
  6.  */
  7.  
  8. #include <proto/ums.h>
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12.  
  13. extern struct Library *UMSBase;
  14.  
  15. int main(int argc, char *argv[])
  16. {
  17.  UMSUserAccount *account;
  18.  
  19.  /* Check arguments */
  20.  if (argc<3) {
  21.   fprintf(stderr,"Usage: %s <user> <passwd>\n",argv[0]);
  22.   exit(20);
  23.  }
  24.  
  25.  /* Login */
  26.  if (account=UMSLogin(argv[1],argv[2])) {
  27.   char *group; /* Pointer to group name */
  28.  
  29.   /* First group: all private messages */
  30.   if (group=strdup("")) {
  31.    UMSMsgNum num=0;
  32.  
  33.    /* Print header */
  34.    printf("Group list:\n");
  35.  
  36.    /* Set local bit 0 in all messages with NO ViewAccess */
  37.    UMSSelectTags(account,UMSTAG_SelWriteLocal, TRUE,
  38.                          UMSTAG_SelSet,        1,
  39.                          UMSTAG_SelQuick,      TRUE,
  40.                          UMSTAG_SelMask,       UMSUSTATF_ViewAccess,
  41.                          UMSTAG_SelMatch,      0,
  42.                          TAG_DONE);
  43.  
  44.    /* For all groups */
  45.    for (;;) {
  46.     /* Set local bit 0 on all messages in message group */
  47.     UMSSelectTags(account,UMSTAG_SelWriteLocal, TRUE,
  48.                           UMSTAG_SelSet,        1,
  49.                           UMSTAG_SelQuick,      TRUE,
  50.                           UMSTAG_WGroup,        group,
  51.                           TAG_DONE);
  52.  
  53.     /* Free string */
  54.     free(group);
  55.  
  56.     /* Search a message which has local bit 0 NOT set */
  57.     if ((num=UMSSearchTags(account,UMSTAG_SearchLocal, TRUE,
  58.                                    UMSTAG_SearchMask,  1,
  59.                                    UMSTAG_SearchMatch, 0,
  60.                                    UMSTAG_SearchQuick, TRUE,
  61.                                    TAG_DONE)) == 0)
  62.      /* No message found --> leave loop */
  63.      break;
  64.  
  65.     /* Get group name */
  66.     if (!ReadUMSMsgTags(account,UMSTAG_RMsgNum, num,
  67.                                 UMSTAG_RGroup,  &group,
  68.                                 TAG_DONE)) {
  69.      /* Print error message and quit */
  70.      fprintf(stderr,"Error in ReadUMSMsgTags()!\n");
  71.      break;
  72.     }
  73.  
  74.     /* Copy group name */
  75.     if (!(group=strdup(group))) {
  76.      fprintf(stderr,"Couldn't copy group name !\n");
  77.      break;
  78.     }
  79.  
  80.     /* Print group name */
  81.     printf("Group: %s\n",group);
  82.  
  83.     /* Free UMS message */
  84.     FreeUMSMsg(account,num);
  85.    }
  86.   }
  87.  
  88.   /* Logout */
  89.   UMSLogout(account);
  90.  } else
  91.   fprintf(stderr,"Couldn't login as '%s'!\n",argv[1]);
  92.  
  93.  exit(0);
  94. }
  95.